import type { ICourseCategory, ICourseCategoryCreateRequest, ICourseCategoryUpdateRequest } from '../course';

/**
 * 课程分类卡片组件属性
 */
export interface ICourseCategoryCardProps {
  /** 课程分类信息 */
  category: ICourseCategory;
  /** 关联课程数量 */
  courseCount: number;
  /** 编辑回调 */
  onEdit?: (id: string) => void;
  /** 删除回调 */
  onDelete?: (id: string) => void;
  /** 查看关联课程回调 */
  onViewCourses?: (id: string) => void;
  /** 自定义样式类名 */
  className?: string;
  /** 是否显示操作按钮 */
  showActions?: boolean;
  /** 是否可选择 */
  selectable?: boolean;
  /** 是否已选中 */
  selected?: boolean;
  /** 选择回调 */
  onSelect?: (id: string, selected: boolean) => void;
}

/**
 * 课程分类表单组件属性
 */
export interface ICourseCategoryFormProps {
  /** 课程分类信息（编辑时传入） */
  category?: ICourseCategory;
  /** 是否显示表单 */
  visible: boolean;
  /** 表单模式 */
  mode: 'create' | 'edit';
  /** 提交回调 */
  onSubmit: (data: ICourseCategoryCreateRequest | ICourseCategoryUpdateRequest) => Promise<void>;
  /** 取消回调 */
  onCancel: () => void;
  /** 是否加载中 */
  loading?: boolean;
  /** 已存在的分类列表（用于验证重复） */
  existingCategories?: ICourseCategory[];
}

/**
 * 课程分类选择器组件属性
 */
export interface ICourseCategorySelectorProps {
  /** 课程分类列表 */
  categories: ICourseCategory[];
  /** 已选中的分类ID列表 */
  selectedCategoryIds: string[];
  /** 选择回调 */
  onChange: (categoryIds: string[]) => void;
  /** 是否多选 */
  multiple?: boolean;
  /** 占位符文本 */
  placeholder?: string;
  /** 是否禁用 */
  disabled?: boolean;
  /** 自定义样式类名 */
  className?: string;
  /** 最大选择数量 */
  maxCount?: number;
  /** 是否显示颜色指示器 */
  showColorIndicator?: boolean;
  /** 是否显示课程数量 */
  showCourseCount?: boolean;
  /** 课程数量映射 */
  courseCountMap?: Record<string, number>;
}